
// var arr = new Array(); 定义一个空数组 
// var arr = new Array(10); 创建一个包含 10 个元素的数组，没有赋值
// var arr = new Array(20,30);创建一个数组有两个元素
// var arr = [1,2,3,4,5]; 字面量定义方式


// push() 接收任意数量的参数，把它们逐个添加到数组的末尾，并返回修改后数组的长度;
// pop()从数组末尾移除最后一个元素，减少数组的 length 值，然后返回移除的元素;
// shift()方法从数组前端移除一个元素,
// unshift() 方法从数组前端添加一个或多个元素
// reverse() 逆向排序, 原数组也被逆向排序了
// sort() 从小到大排序 ,  原数组也被升序排序了
// concat() 追加数据, 创建一个新数组, 不改变原数组
// slice()  不修改原数组, 将原数组中的指定区域数据提取出来
// splice() : 截取原数组中指定的数据, 会改变原数组
// join() : 连接数组中的元素, 并返回连接后的字符串, 不传参则以逗号连接

// splice()  
// 删除: 如果只有两个参数, 则表示删除指定区域的数据
// 插入: 如果有3个或以上参数,且第二个参数(长度)为0,则表示插入
// 替换: 如果有3个或以上的参数, 且第二个参数(长度)不为0, 则表示替换





// indexOf() 判断数组中是否包含某个元素， 和字符串的indexOf用法类似
// forEach()  用来遍历数组中的每一项；这个方法执行是没有返回值的，对原来数组也没有影响
// var arr = [1,2,3,4,5];
// arr.forEach(function(value, index, array){
//       console.log("值：" + value + ", 下标：" + index + ", 数组：" + array);
// });

// var result = arr.reduce(function(pre, cur, index, array){
//     console.log("前一个值：" + pre + "当前值：" + cur + ", 下标：" + index + ", 数组：" + array);
//     return cur;
//   }, 10);
// var arr = [1,2,3,4,5];
// var sum = arr.reduce(function(pre, cur){
//         return pre + cur;
// });
// console.log(sum); //15



//filter()  //过滤出数组中你想要的元素， 不改变原数组
// var arr = [1,2,3,4,5];
// function fn(n) {
//       return n >= 3;
// }
// var newArr = arr.filter(fn);
// console.log(arr);  //[1,2,3,4,5]
// console.log(newArr); //[3,4,5]





//es6 新增

// find()和findIndex()
// 数组实例的find方法，用于找出第一个符合条件的数组成员。它的参数是一个回调函数，所有数组成员依次执行该回调函数，直到找出第一个返回值为true的成员，然后返回该成员。如果没有符合条件的成员，则返回undefined。
// let arr=[1,2,3,'hahaha',4];
// arr.find(function(x,i,arr){
//     console.log(x,i,arr)
//     return x>=4
// })

// let arrs=[1,2,3,'hahaha',4];
// arrs.findIndex(function(x,i,arr){
//     console.log(x,i,arr)
//     return x>=3
// })

// for-of 遍历集合：
// 这是目前遍历数组最简洁和直接的语法；
// 它避免了for-in的所有缺陷；
// 与forEach()不一样，它支持break，continue和return

//Array.of(): 方法用于将一组值，转换为数组
//console.log(Array.of({a:'a'},{b:'b'}))//[{a:'a'},{b:'b'}]




// Array.from(arrayLike, mapFn, thisArg)
// 参数

// arrayLike
// 想要转换成数组的伪数组对象或可迭代对象。
// mapFn (可选参数)
// 如果指定了该参数，新数组中的每个元素会执行该回调函数。
// thisArg (可选参数)
// 可选参数，执行回调函数 mapFn 时 this 对象。